#!/bin/bash

# Sugestão: para executar isto em várias máquinas remotas, utilize o sshc (cluster ssh)
dt=`date +%d%m%y%H%M%S`

#Parâmetros da Simulação
s_range=7.5
size=70
r_range=15
total_rounds=100000
idle=0.00004 #mesma coisa que o enabled
tx=0.000064
rx=0
standby=0.0000008
#mobility=projects.defaultProject.models.mobilityModels.RandomWayPoint #Tem que ser o nome inteiro
mobility=projects.defaultProject.models.mobilityModels.CorrelatedRandomWalk #Tem que ser o nome inteiro

#Assim um conjunto de simulacoes sempre roda com o mesmo random seed
fixedSeed=`rand -M 9999999999`
seed="useFixedSeed=true fixedSeed=$fixedSeed"
ml="0.08"
tipo="-batch"

date >> log$dt
#Experimentos do primeiro artigo
k=3
residual="false"
#Faz primeiro com 512 para ver quem é o melhor
for nodes in 512; do
pct=0.05;
if [ $nodes == 256 ]; then
	pct=0.1;
fi
if [ $nodes == 512 ]; then
	pct=0.05;
fi
if [ $nodes == 1024 ]; then
	pct=0.025;
fi
# Se fixarmos a porcentagem de beacons em algo, seremos injustos quando n é muito grande. A ideia aqui é manter o número médio de beacons vizinhos estável. Lembre que o DPE usa sempre 4 beacons somente. Além disso, 5% de 1024 é 51; isso faz uma diferença grande em termos de erro de localização. Por fim, com n pequeno, o RPE não localiza toda a rede se for uma porcentagem fixa (por exemplo, 0.05)
	for node in  "ufam:OGDCNode" "ufam:GAFNode" "ufam:A3ModifiedNode"; do
		for alg in  "Localization/Algorithm/name=RPE" "Localization/Algorithm/name=DPE" ""; do
			nice -19 ./sinalgo $tipo -project ufam -gen $nodes $node Random C=UDG E=RealisticConsumptionModel -overwrite dimensions=2 dimX=$size dimY=$size dimZ=2 UDG/rMax=$r_range $alg RPE/Beacons/percentage=$pct RPE/MinReferences/number=3 RPE/MaxReferences/number=10 RPE/MaxResidual/number=2 Noise/Mean/percentage=0.001 Noise/Variance/percentage=0.01 EnergyConsumption/joulesPerByteRx=$rx EnergyConsumption/joulesPerByteTx=$tx EnergyConsumption/joulesEnabled=$idle EnergyConsumption/joulesStandby=$standby sensorRange=$s_range Target/paintTrace=true RandomWayPoint/Speed/Distribution=Gaussian RandomWayPoint/WaitingTime/Distribution=Gaussian randomwaypoint/speed/mean=2 randomwaypoint/speed/variance=1 randomwaypoint/waitingtime/mean=0 randomwaypoint/waitingtime/variance=0 logToTimeDirectory=true tracking/targetenabled=true DPE/BeaconsStructureDistanceFromCentralPoint/number=5 DensityControl/RoundLength=7500 simulationLength=$total_rounds target/MobilityModel=$mobility $seed CorrelatedRandomWalk/ml=$ml CorrelatedRandomWalk/cp=0.999 Coverage/k=$k DC/useResidual=$residual > lastExecution 2>&1
			sleep 2;
		done;
	done;
done;
temp=`date`;
echo "$temp Fim da fase 1" >> log$dt
